/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkg1ifxArchivos;

/**
 *
 * @author strailaparicio
 */
public class caDatosTemplate {
    
    private caTemplate[] template= new caTemplate[0];//Arreglo de bytes con el template
    public void setTemplate(caTemplate[] dato)
    {
        template=dato;
        //tamano=template.length;
    }
    public caTemplate[] getTemplate()
    {
        return template;
    }
        
    public caTemplate getTemplate(int cual)
    {
        return template[cual];
    }
    public void agregaTemplate(caTemplate dato)
    { 
        caTemplate[] stmps = new caTemplate[template.length];
        System.arraycopy(template, 0, stmps, 0, template.length);
        template=new caTemplate[template.length+1];
        System.arraycopy(stmps, 0, template, 0, stmps.length);
        template[template.length-1]=dato;
       
        //tamano=template.length;


        
    }
    
    /**
     * Agrega un dato template a la clase csDatosTemplate
     * 
     * @param identificador indica el uso del template -1-No hay identificador,  HUELLA #Dedos(01234,56789), IRIS(1,2)
     * @param datosbayte arreglo de bytes con el template.
     */
    public void agregaTemplate(int identificador, byte[] datosbayte)
    {
        caTemplate otemplatetmp=new caTemplate();
        otemplatetmp.setIdentificador(identificador);
        otemplatetmp.setTemplate(datosbayte);
        agregaTemplate(otemplatetmp);
    }
    
    private String tipotemplate = "HUELLA"; //HUELLA, ROSTRO, IRIS
    public void setTipo(String dato)
    {
        tipotemplate=dato;
    }
    public String getTipo()
    {
        return tipotemplate;
    }
    //private long tamano; //Tamaño del template
    //public void setTamano(long dato)
    //{
    //    tamano=dato;
    //}
    public int getNumTemplates()
    {
        return template.length;
    }
    public long getTamano(int cualtemplate)
    {
        //tamano=template.length;
        //Strail 15dic2011 return template[cualtemplate].getTemplate().length;
        return template[cualtemplate].tamano;
    }
        
    private int veltransmision=1024; //Tamaño del template
    public void setVelTrasnmit(int dato)
    {
        veltransmision=dato;
    }
    public int VelTrasnmit()
    {
        return veltransmision;
    }
    private String[] cedulas=new String[0];
    public void setCedulas(String[] dato)
    {
        cedulas=dato;
    }
    public String[] getCedulas()
    {
        return cedulas;
    }
    /***
     * Agrrega un String al arreglo de cedulas
     * @param dato  String para a gregar
     */
    public void agregeCedula(String dato)
    {
        String[] stmps = new String[cedulas.length];
        System.arraycopy(cedulas, 0, stmps, 0, cedulas.length);
        cedulas=new String[cedulas.length+1];
        System.arraycopy(stmps, 0, cedulas, 0, stmps.length);
        cedulas[cedulas.length-1]=dato; 
    }
    private int ntipopeticion = 1;//1-IDENTIFICACION, 2-VERIFICACION
    public void setTipoPeticion(int dato)
    {
        ntipopeticion=dato;
        
    }
    public int getTipoPeticion()
    {
        return ntipopeticion;
    }
    
    /***
     * Convierte una cadena protocolo en datos para un objeto de tipo caDatosTemplate
     * en formatos:
     * TIPO BIOMETRIA|CANT TEMPLATES|TEM1|TEM2..n|tamaTransmit(1024)|CANT CEDUL|CED1|CED2..n
     * 
     * @param scadena 
     */
    public void ConvCad(String scadena)
    {
       try
       {
            int tamano =0;
            int nposdato=-1;
            String[] sdatosmensage = new String[0];
            sdatosmensage=scadena.split("\\|");// TIPO BIOMETRIA|CANT TEMPLATES|TEM1|TEM2..n|tamaTransmit(1024)|CANT CEDUL|CED1|CED2..n
            if(sdatosmensage.length>0)
            {
      
                tipotemplate=sdatosmensage[0];
                tamano = Integer.parseInt(sdatosmensage[1]);
                template = new caTemplate[tamano];
                int posgen=0;
                for(int i=0;i<template.length;i++)
                {
                    posgen=i+2;
                    template[i]=new caTemplate();
                    template[i].tamano=Long.parseLong(sdatosmensage[posgen]);


                }
                posgen++;
                veltransmision=Integer.parseInt(sdatosmensage[posgen]);
                //posgen + 2 es el numero de cedulas
                posgen++;
                cedulas=new String[Integer.parseInt(sdatosmensage[posgen])];
                
                for(int c=0;c<cedulas.length;c++)
                {
                    posgen++;
                    cedulas[c]=sdatosmensage[posgen];
                    //agregeCedula(sdatosmensage[posgen]);
                }


                
            }

            
       }catch(Exception e)
       {
           System.out.println(e);
       }
            
        
    }
    
    /***
     * 
     * 
     * @return cadena en formato protocolo IFX
     * TIPO BIOMETRIA|CANT TEMPLATES|TEM1|TEM2..n|tamaTransmit(1024)|CANT CEDUL|CED1|CED2..n
     */    
    public String aCadena()
    {
        int ncantidad = template.length;
        String stamanos="";
        for(int i=0;i<template.length;i++)
        {
            stamanos+= template[i].getTemplate().length+"|";
        }
        //CEDULAS
        int ncantidadced=cedulas.length;
        String scedulas="";
        for(int c=0;c<cedulas.length;c++)
        {
            scedulas+="|"+cedulas[c];
        }    
        return tipotemplate+
                    "|"+String.valueOf(ncantidad)+
                    "|"+stamanos+
                    ""+String.valueOf(veltransmision)+
                    "|"+ String.valueOf(ncantidadced)+
                    ""+scedulas; 
            
        //
    }
    

}
